package model;

/**
 * @ClassName: LockFreeSingleton
 * @Author: liugui
 * @Date: 2020-04-08 22:42
 **/
public class LockFreeSingleton {

    private static final LockFreeSingleton instance = new LockFreeSingleton();

    private LockFreeSingleton() {
        System.out.println(" 构造了一个 LockFreeSingleton");
    }

    //Java单例模式的最佳实践
    // 类只加载一次 通过在声明时直接实例化静态成员来保证一个类只有一个实例
    // 该方式避免了使用同步锁机制和判断实例是否被创建的额外检查
    public static synchronized LockFreeSingleton getInstance(){
        return instance;
    }

    public void doSomething(){
        System.out.println( "  Something is Done.");
    }
}
